package com.itheima.advantagesup.service.impl;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.itheima.advantagesup.common.PageBean;
import com.itheima.advantagesup.dto.*;
import com.itheima.advantagesup.entity.YddAdvpos;
import com.itheima.advantagesup.entity.YddTag;
import com.itheima.advantagesup.mapper.TagMapper;
import com.itheima.advantagesup.service.TagService;
import com.itheima.advantagesup.vo.YddTagVO;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 标签服务impl
 *
 * @author liutao
 * @date 2023/07/27
 */
@Service
public class TagServiceImpl implements TagService {
    @Autowired
    private TagMapper tagMapper;

    /**
     * 添加
     *
     * @param tagCreateDTO 标签创建dto
     */
    @Override
    public void add(TagCreateDTO tagCreateDTO) {
        YddTag yddTag = new YddTag();
        BeanUtils.copyProperties(tagCreateDTO, yddTag);
        tagMapper.add(yddTag);
    }

    /**
     * 查询所有
     *
     * @param tagUpdateDTO 标签更新dto
     * @return {@link List}<{@link YddTag}>
     */
    @Override
    public List<YddTagVO> queryAll(TagUpdateDTO tagUpdateDTO) {
        YddTag yddTag = new YddTag();
        BeanUtils.copyProperties(tagUpdateDTO, yddTag);

        List<YddTagVO> list = tagMapper.queryAll();
        return list;
    }

    @Override
    public PageBean list(TagListPageDTO tagListPageDTO) {
        //开始分页
        PageHelper.startPage(Integer.parseInt(tagListPageDTO.getPage()), Integer.parseInt(tagListPageDTO.getLimit()));
        YddTag yddTag = new YddTag();
        BeanUtils.copyProperties(tagListPageDTO,yddTag);
        Page<YddTag> yddTagPage = tagMapper.seleteList(yddTag);

        PageBean<YddTag> pageBean = new PageBean<>();

        pageBean.setCount((int) yddTagPage.getTotal());
        pageBean.setTotalPages(yddTagPage.getPages());
        pageBean.setPageSize(yddTagPage.getPageSize());
        pageBean.setCurrentPage(yddTagPage.getPageNum());

        pageBean.setData(yddTagPage.getResult());
        return pageBean;

    }


    /**
     * 行信息
     *
     * @param id 标签信息dto
     * @return {@link YddTag}
     */
    @Override
    public YddTag rowInfo(Integer id) {

        return tagMapper.rowInfo(id);
    }

    @Override
    public void update(TagUpdateDTO tagUpdateDTO) {
        YddTag yddTag = new YddTag();
        BeanUtils.copyProperties(tagUpdateDTO,yddTag);
        tagMapper.update(yddTag);
    }

    @Override
    public void deteleById(Integer id) {
        tagMapper.deleteById(id);
    }
}
